package com.example.demo.level3.homework;

import com.example.demo.level3.LearnStream;
import com.example.demo.level3.pojo.People;
import org.junit.jupiter.api.Test;

import java.math.BigDecimal;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

/**
 * @author 方向民
 */
public class AnswerByFxm {

    /**
     * 参考答案
     * 请勿在答题前查看！
     */
    @Test
    public void sample01() {
        List<People> list = LearnStream.getList();
        Map<Boolean, String> answer = list.stream().collect(
                Collectors.groupingBy(
                        // 根据是否及格进行分组
                        g -> g.getScore().compareTo(new BigDecimal("60")) >= 0
                        , Collectors.collectingAndThen(
                                Collectors.toList(),
                                xx -> xx.stream()
                                        // 根据分组进行倒排
                                        .sorted(Comparator.comparing(People::getScore, Comparator.reverseOrder()))
                                        // 限制最大3个人
                                        .limit(3)
                                        // 转换成名字+分数
                                        .map(x -> x.getName() + x.getScore())
                                        // 使用->进行拼接
                                        .collect(Collectors.joining("->"))
                        ))
        );
        System.out.println(answer);
    }
}
